package com.cjxy.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cjxy.domain.Usertail;
import com.cjxy.service.UsertailService;
import com.cjxy.utils.AjaxResult;
import com.cjxy.vo.PageQuery;
import com.mysql.cj.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
public class UserTailController {

    @Autowired
    private UsertailService usertailService;

    @GetMapping("/findAll")
    public List<Usertail> findAll(){
        return usertailService.list();
    }

    /**
     * 分页查询
     * @param pageQuery
     * @param pageQuery
     * @return
     */
    @PostMapping("/listPage")
    public Page<Usertail> listPage(@RequestBody PageQuery pageQuery){
        Page page1 = new Page(pageQuery.getPageIndex(), pageQuery.getPageSize());//从前端传入当前页码和页面大小
        //构造条件
        QueryWrapper<Usertail> usertailQueryWrapper = new QueryWrapper<>();
        //要求是： 输入一个参数，那就查询这一个参数；输入两个，则两个都要满足；不输入也可以执行，查询所有
        //根据地址查询
        if(!StringUtils.isNullOrEmpty(pageQuery.getAddress())){
            //第一项为数据库的列明 第二项为传进来的参数   eq:=
            usertailQueryWrapper.like("address", pageQuery.getAddress()); //select * from userdetail where address=#{address}
        }
        //追加条件自动省略where，完成拼接
        if(!StringUtils.isNullOrEmpty(pageQuery.getName())){
            usertailQueryWrapper.like("name", pageQuery.getName());
        }
        return usertailService.page(page1,usertailQueryWrapper);
    }

    //新增或者修改
    @PostMapping("/saveOrUpdate")
    public AjaxResult saveOrUpdate(@RequestBody Usertail usertail){
      return   usertailService.saveOrUpdate(usertail)?AjaxResult.me().setMessage("数据更新成功"):AjaxResult.me().setMessage("数据更新失败");
    }
    //删除
    @DeleteMapping("/remove")
    public AjaxResult remove(Integer id){
      return   usertailService.removeById(id)?AjaxResult.me().setMessage("数据删除成功"):AjaxResult.me().setMessage("数据删除失败");
    }

    /**
     * 批量删除
     * @param ids
     * @return
     */
    @PatchMapping("batchDelete")
    public AjaxResult batchDelete(@RequestBody List<Integer> ids){
       return usertailService.removeByIds(ids)?AjaxResult.me().setMessage("数据批量删除成功"):AjaxResult.me().setMessage("数据批量删除失败");
    }
}
